package thread;

import java.util.Scanner;

public class Demo10 {
    //当 Thread.sleep() 因中断而抛出 InterruptedException 时，它会清除当前的中断标志位（从 true 设回 false）。随后你的 catch 块中使用了 continue 语句，这直接开始了下一轮循环。在新一轮循环的条件检查 !Thread.currentThread().isInterrupted() 时，因为中断标志位已被清除，条件结果又为 true，所以循环会继续
    public static void main(String[] args) {
        Thread t = new Thread(() -> {
            while(!Thread.currentThread().isInterrupted()) {
                System.out.println("hello thread");
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    //break;
                    continue;
                }
            }
            System.out.println("线程 t 终止");
        });

        t.start();

        System.out.println("输入任意内容, 终止 t 线程");
        Scanner scanner = new Scanner(System.in);
        scanner.next();

        // 终止 t 线程
        t.interrupt();
    }
}
